package com.sg.dto.biz.bff.common;

import com.wicket.okrbff.common.annotations.TreeType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc BffSetConstructionTaskDto
 * @使用场景
 */
@Data
public class BffSetConstructionTaskDto implements Serializable {

    /**
     * 目标分类ID
     */
    @TreeType("id")
    @ApiModelProperty("目标分类ID")
    private String targetCategoryId;

    /**
     * 归属父级目标分类ID
     */
    @TreeType("pid")
    @ApiModelProperty("归属父级目标分类ID")
    private String parentTtargetCategoryId;

    /**
     * 被评对象目标周期ID
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String evaObjTargetCycleId;

    /**
     * 目标分类标识
     */
    @ApiModelProperty("目标分类标识")
    private String targetCategoryCode;

    /**
     * 目标分类编号
     */
    @ApiModelProperty("目标分类编号")
    private String targetCategoryNumber;

    /**
     * 目标分类名称
     */
    @ApiModelProperty("目标分类名称")
    private String targetCategoryName;

    /**
     * 目标分类简介
     */
    @ApiModelProperty("目标分类简介")
    private String targetCategoryDescribe;

    /**
     * 目标分类备注
     */
    @ApiModelProperty("目标分类备注")
    private String targetCategoryRemarks;

    /**
     * 目标分类是否末级 TRUE:是 FALSE:否
     */
    @ApiModelProperty("目标分类是否末级")
    private String isLast;

    /**
     * 冗余一级目标分类ID
     */
    @ApiModelProperty("冗余一级目标分类ID")
    private String rootTargetCategoryId;

    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @ApiModelProperty("周期模式类型编码")
    private String periodicModeTypeCode;

    /**
     * 冗余目标ID
     */
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 层级
     */
    @ApiModelProperty("层级")
    private Long levelNumber;

    /**
     * 是否已完成 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已完成")
    private String isComplete;

    /**
     * 权重分值
     */
    @ApiModelProperty("权重分值")
    private Double weightScore;

    /**
     * 权重
     */
    @ApiModelProperty("权重")
    private Double weightValue;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("牵头部门ID")
    private String deptId;

    /**
     * 组织内部门身份名称
     */
    @ApiModelProperty("牵头部门身份")
    private String virtualOrgDeptStatus;

    /**
     * 部门简称
     */
    @ApiModelProperty("牵头部门简称")
    private String deptShortName;

    /**
     * 责任人个人账号ID
     */
    @ApiModelProperty("责任人个人账号ID")
    private String personLiableUserId;

    /**
     * 责任人职务名称
     */
    @ApiModelProperty("责任人职务名称")
    private String personLiableName;

    /**
     * 责任人真实姓名
     */
    @ApiModelProperty("责任人真实姓名")
    private String personLiableIdCardName;

    /**
     * 责任人昵称
     */
    @ApiModelProperty("责任人昵称")
    private String personLiableNickName;

    /**
     * 分管领导个人账号ID
     */
    @ApiModelProperty("分管领导个人账号ID")
    private String deptLeaderUserId;

    /**
     * 分管领导职务名称
     */
    @ApiModelProperty("分管领导职务名称")
    private String deptLeaderPostName;

    /**
     * 分管领导真实姓名
     */
    @ApiModelProperty("分管领导真实姓名")
    private String deptLeaderIdCardName;

    /**
     * 分管领导昵称
     */
    @ApiModelProperty("分管领导昵称")
    private String deptLeaderNickName;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 归属父级目标分类名称
     */
    @ApiModelProperty("归属父级目标分类名称")
    private String parentTargetCategoryName;
    /**
     * 实时得分
     */
    @ApiModelProperty("实时得分")
    private String realTimeScore;

    /**
     * 达成度
     */
    @ApiModelProperty("达成度")
    private Long reach;
    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 部门排序
     */
    @ApiModelProperty("部门排序")
    private Long dutyBodyOrderNum;

    /**
     * 个人排序
     */
    @ApiModelProperty("个人排序")
    private Long personalOrderNumber;

    /**
     * 权重排序
     */
    @ApiModelProperty("权重排序")
    private Long weightOrderNumber;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 是否开启预算 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启预算")
    private String isUseBudget;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffSetConstructionTaskDto that = (BffSetConstructionTaskDto) o;
        return targetCategoryId == that.targetCategoryId && parentTtargetCategoryId == that.parentTtargetCategoryId && evaObjTargetCycleId == that.evaObjTargetCycleId && targetCategoryCode == that.targetCategoryCode && targetCategoryNumber == that.targetCategoryNumber && targetCategoryName == that.targetCategoryName && targetCategoryDescribe == that.targetCategoryDescribe && targetCategoryRemarks == that.targetCategoryRemarks && isLast == that.isLast && rootTargetCategoryId == that.rootTargetCategoryId && periodicModeTypeCode == that.periodicModeTypeCode && targetId == that.targetId && levelNumber == that.levelNumber && isComplete == that.isComplete && weightScore == that.weightScore && weightValue == that.weightValue && deptId == that.deptId && virtualOrgDeptStatus == that.virtualOrgDeptStatus && deptShortName == that.deptShortName && personLiableUserId == that.personLiableUserId && personLiableName == that.personLiableName && personLiableIdCardName == that.personLiableIdCardName && personLiableNickName == that.personLiableNickName && deptLeaderUserId == that.deptLeaderUserId && deptLeaderPostName == that.deptLeaderPostName && deptLeaderIdCardName == that.deptLeaderIdCardName && deptLeaderNickName == that.deptLeaderNickName && subjectLifeCycle == that.subjectLifeCycle && parentTargetCategoryName == that.parentTargetCategoryName && realTimeScore == that.realTimeScore && reach == that.reach && orderNumber == that.orderNumber && dutyBodyOrderNum == that.dutyBodyOrderNum && personalOrderNumber == that.personalOrderNumber && weightOrderNumber == that.weightOrderNumber && createTime == that.createTime && operateTime == that.operateTime && isUseBudget == that.isUseBudget;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), targetCategoryId, parentTtargetCategoryId, evaObjTargetCycleId, targetCategoryCode, targetCategoryNumber, targetCategoryName, targetCategoryDescribe, targetCategoryRemarks, isLast, rootTargetCategoryId, periodicModeTypeCode, targetId, levelNumber, isComplete, weightScore, weightValue, deptId, virtualOrgDeptStatus, deptShortName, personLiableUserId, personLiableName, personLiableIdCardName, personLiableNickName, deptLeaderUserId, deptLeaderPostName, deptLeaderIdCardName, deptLeaderNickName, subjectLifeCycle, parentTargetCategoryName, realTimeScore, reach, orderNumber, dutyBodyOrderNum, personalOrderNumber, weightOrderNumber, createTime, operateTime, isUseBudget);
    }


}
   